In this script, there is conducted the estimation for the measure_marginal approach for a single given env. The programs is the set of bytecode programs with varying number of opcodes. The measurements are time measurements of program runs or benchmarks. The estimation of each opcode is calculated as the regression against the number of a given opcode in the executed programs.

Parametrization. The evm client name env=erigon, the file with programs programs=pg_marginal_full.csv, the file with measurements results=results_marginal_full_erigon.csv,
the output csv file with estimated cost output_estimated_cost=reports-12.01.2025/estimated_cost_marginal_full_erigon.csv, should the details be included in the report details=FALSE.

The comparision of result. Before and after removing outlying measurement. Switch removed_outliers to FALSE to see the comparison.

if (removed_outliers) {
  measurements = remove_compare_outliers(measurements, 'measure_total_time_ns', c(env))
}

Now we can investigate the linear regressions.

for (opcode in all_opcodes) {
  estimate = compute_all(opcode=opcode, env=env, use_median=TRUE, plots=ifelse(details,'all','scatter'))
  estimates[nrow(estimates) + 1, ] = c(opcode, estimate, env)
}

The resulting estimates based on the regressions above.

estimates
##                 op estimate_marginal_ns estimate_marginal_ns_stderr    env
## 1              ADD             4.972727                   0.8407221 erigon
## 2              MUL             7.776364                   0.5806178 erigon
## 3              SUB             4.450909                   0.5470368 erigon
## 4              DIV             6.596364                   0.4863654 erigon
## 5             SDIV             9.076364                   0.7562961 erigon
## 6              MOD             6.210000                   0.6062590 erigon
## 7             SMOD            10.308182                   0.5563424 erigon
## 8           ADDMOD            10.101818                   0.3489741 erigon
## 9           MULMOD            23.619091                   0.7096656 erigon
## 10             EXP            33.822727                   1.2000687 erigon
## 11      SIGNEXTEND            11.729091                   0.9752764 erigon
## 12              LT             5.720909                   0.5205361 erigon
## 13              GT             6.430909                   0.6454363 erigon
## 14             SLT             6.521818                   0.7780662 erigon
## 15             SGT             6.529091                   0.8146059 erigon
## 16              EQ             6.577273                   0.5136998 erigon
## 17          ISZERO             4.794545                   0.6922969 erigon
## 18             AND             4.686364                   0.6345439 erigon
## 19              OR             5.349091                   0.4836675 erigon
## 20             XOR             5.725455                   0.5526758 erigon
## 21             NOT             4.244545                   0.5687548 erigon
## 22            BYTE             6.305455                   0.5930423 erigon
## 23             SHL             9.270000                   0.9589907 erigon
## 24             SHR             8.951818                   0.6716037 erigon
## 25             SAR             9.514545                   0.6017837 erigon
## 26       KECCAK256           306.936364                   2.9553926 erigon
## 27         ADDRESS            11.791818                   0.7245327 erigon
## 28          ORIGIN             6.858182                   0.5975327 erigon
## 29          CALLER            12.210909                   0.5035116 erigon
## 30       CALLVALUE             2.986364                   0.4545894 erigon
## 31    CALLDATALOAD            27.469091                   1.0488764 erigon
## 32    CALLDATASIZE             4.587273                   0.7811745 erigon
## 33    CALLDATACOPY            30.061818                   0.9162754 erigon
## 34        CODESIZE             4.956364                   0.9808448 erigon
## 35        CODECOPY            17.631818                   0.7790764 erigon
## 36        GASPRICE             2.660909                   0.9246453 erigon
## 37     EXTCODESIZE            75.725455                   1.5969086 erigon
## 38     EXTCODECOPY            82.139091                   0.9966856 erigon
## 39  RETURNDATASIZE             5.159091                   0.3936170 erigon
## 40  RETURNDATACOPY            64.566364                  12.5840647 erigon
## 41     EXTCODEHASH            89.587273                   2.0811914 erigon
## 42        COINBASE             6.780000                   0.5517296 erigon
## 43       TIMESTAMP             5.683636                   0.7049084 erigon
## 44          NUMBER             4.406364                   0.4685490 erigon
## 45      DIFFICULTY             6.356364                   0.4657346 erigon
## 46        GASLIMIT             4.510909                   0.8445360 erigon
## 47         CHAINID             5.397273                   0.7658812 erigon
## 48     SELFBALANCE            21.115455                   0.3114955 erigon
## 49             POP             3.789091                   0.5516763 erigon
## 50           MLOAD            10.124545                   0.6120470 erigon
## 51         MSTORE8            10.037273                   0.7534359 erigon
## 52            JUMP            18.596364                   3.1069684 erigon
## 53           JUMPI            25.825455                   4.7826379 erigon
## 54              PC             4.470909                   0.4223025 erigon
## 55           MSIZE             4.937273                   0.5531078 erigon
## 56             GAS             4.915455                   0.4395706 erigon
## 57        JUMPDEST             2.378182                   0.7165039 erigon
## 58           PUSH0             3.773636                   0.3931389 erigon
## 59            LOG0           169.572727                   2.8005024 erigon
## 60            LOG1           188.881818                   3.2633918 erigon
## 61            LOG2           206.995455                   3.6455840 erigon
## 62            LOG3           225.690000                   2.1332003 erigon
## 63            LOG4           246.410000                   1.7571473 erigon
## 64            CALL           392.440000                   5.0254809 erigon
## 65          RETURN            42.229091                   4.1743891 erigon
## 66    DELEGATECALL           278.067273                   4.0398979 erigon
## 67      STATICCALL           331.874545                   4.0039168 erigon
## 68          REVERT            65.220909                   6.7057565 erigon
## 69           PUSH1             6.030909                   0.6243574 erigon
## 70           PUSH2             8.233636                   0.5540129 erigon
## 71           PUSH3             8.348182                   0.7876708 erigon
## 72           PUSH4             8.470000                   0.6476284 erigon
## 73           PUSH5             9.147273                   0.5070953 erigon
## 74           PUSH6             8.284545                   0.6230447 erigon
## 75           PUSH7             8.575455                   0.5081386 erigon
## 76           PUSH8             7.860000                   0.6047838 erigon
## 77           PUSH9             8.720000                   0.7509942 erigon
## 78          PUSH10             7.470000                   0.6508292 erigon
## 79          PUSH11             6.972727                   0.6066830 erigon
## 80          PUSH12             7.803636                   0.5412807 erigon
## 81          PUSH13             7.643636                   0.6829725 erigon
## 82          PUSH14             8.418182                   0.5653493 erigon
## 83          PUSH15             8.149091                   0.4805476 erigon
## 84          PUSH16             7.213636                   0.4768810 erigon
## 85          PUSH17             8.760909                   0.4974490 erigon
## 86          PUSH18             7.977273                   0.4927961 erigon
## 87          PUSH19             8.705455                   0.3606931 erigon
## 88          PUSH20             9.407273                   0.5017175 erigon
## 89          PUSH21             9.413636                   0.9011153 erigon
## 90          PUSH22             8.840909                   0.5908699 erigon
## 91          PUSH23             8.919091                   0.4703396 erigon
## 92          PUSH24             8.535455                   0.4823781 erigon
## 93          PUSH25             7.666364                   0.3594853 erigon
## 94          PUSH26             8.747273                   0.6672901 erigon
## 95          PUSH27             8.341818                   0.5355896 erigon
## 96          PUSH28             8.987273                   0.6152175 erigon
## 97          PUSH29             9.092727                   0.7235508 erigon
## 98          PUSH30             9.104545                   0.6458837 erigon
## 99          PUSH31            10.374545                   0.7137670 erigon
## 100         PUSH32             9.014545                   0.6215479 erigon
## 101           DUP1             6.410000                   0.7439761 erigon
## 102           DUP2             5.237273                   0.7519780 erigon
## 103           DUP3             5.124545                   0.7021318 erigon
## 104           DUP4             5.343636                   0.3613534 erigon
## 105           DUP5             4.490909                   0.9456187 erigon
## 106           DUP6             4.496364                   0.5451669 erigon
## 107           DUP7             4.646364                   0.7149241 erigon
## 108           DUP8             4.924545                   0.5332155 erigon
## 109           DUP9             4.397273                   0.8006661 erigon
## 110          DUP10             4.873636                   0.6147751 erigon
## 111          DUP11             4.911818                   0.5653405 erigon
## 112          DUP12             5.001818                   0.6064435 erigon
## 113          DUP13             3.680909                   0.5848421 erigon
## 114          DUP14             3.635455                   0.7532945 erigon
## 115          DUP15             4.495455                   0.6364037 erigon
## 116          DUP16             5.013636                   0.7345454 erigon
## 117          SWAP1             4.889091                   0.4400597 erigon
## 118          SWAP2             5.237273                   0.4839802 erigon
## 119          SWAP3             5.290909                   0.5144576 erigon
## 120          SWAP4             5.620000                   0.7047039 erigon
## 121          SWAP5             4.887273                   0.4896752 erigon
## 122          SWAP6             5.184545                   0.5203738 erigon
## 123          SWAP7             5.976364                   0.6131602 erigon
## 124          SWAP8             5.528182                   0.2229939 erigon
## 125          SWAP9             5.659091                   0.2723659 erigon
## 126         SWAP10             5.672727                   0.4555766 erigon
## 127         SWAP11             5.073636                   0.7397813 erigon
## 128         SWAP12             5.477273                   0.3776364 erigon
## 129         SWAP13             5.838182                   0.5729289 erigon
## 130         SWAP14             5.854545                   0.2717221 erigon
## 131         SWAP15             5.154545                   0.6014583 erigon
## 132         SWAP16             6.580909                   0.4770662 erigon

The results are exported to reports-12.01.2025/estimated_cost_marginal_full_erigon.csv.